package cn.actoncode.boot.framework.minimax.core.bean;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;

@Data
public class MiniMaxStreamResponse {

    /**
     * 响应id
     */
    private String id;

    /**
     * 请求创建时间，是以秒为单位的Unix时间戳。
     */
    private Long created;

    /**
     * 调用的模型编码
     */
    private String model;

    /**
     * 当前对话的模型输出内容
     */
    private List<Choices> choices;

    /**
     * 结束时返回本次模型调用的 tokens 数量统计
     */
    private Usage usage;

    /**
     * 对象类型
     * 流式:   chat.completion
     * 非流式: chat.completion.chunk
     */
    private String object;

    /**
     * 基础信息
     */
    @JSONField(name = "base_resp")
    private BaseResp baseResp;

    @Data
    public static class Choices {

        /**
         * 结果下标
         **/
        private Integer index;

        /**
         * 模型推理终止的原因。
         * stop代表推理自然结束或出发停止词。
         * tool_calls 代表模型命中函数。
         * length 代表到达 tokens 长度上限。
         **/
        @JSONField(name = "finish_reason")
        private String finishReason;

        /**
         * 模型返回的文本信息
         */
        private Delta delta;

        /**
         * 模型返回的最后一条文本信息
         */
        private Message message;
    }

    @Data
    public static class Delta {

        /**
         * 本条信息的角色
         */
        private String role;

        /**
         * 本条信息的具体内容
         */
        private String content;
    }

    @Data
    public static class Message {

        /**
         * 本条信息的角色
         */
        private String role;

        /**
         * 本条信息的具体内容
         */
        private String content;
    }

    @Data
    public static class Usage {

        /**
         * 总 tokens 数量
         */
        @JSONField(name = "total_tokens")
        private Integer totalTokens;
    }

    @Data
    public static class BaseResp {

        /**
         * 错误码
         */
        @JSONField(name = "status_code")
        private Integer code;

        /**
         * 错误信息
         */
        @JSONField(name = "status_msg")
        private String msg;

    }


}
